package thread;

/**
 * 多线程
 * 多线程可以并发执行多个代码片段,相当于将代码的执行方式从原来的单一顺序执行流程
 * 改为多个代码片段"同时"执行
 *
 * 并发:多个县城(多个单一的顺序执行流程)中的代码都是走走挺挺的,想成调度器将cpu
 * 时间片尽可能均匀分配给没一个线程,哪一个线程得到cpu时间片段就会被cpu执行一会
 * 儿 由于cpu超高性能,红馆给我们的感受就是线程同时运行
 *
 * @author Luka
 * @date 2021/06/03 10:48
 **/
public class ThreadDemo {
    public static void main(String[] args) {
        MyThread1 m1 = new MyThread1();
        MyThread2 m2 = new MyThread2();

        /*
            祁东县城要调用start方法不能用run方法
         */
        m1.start();
        m2.start();
    }
}

/**
 * 第一种创建线程的方法有两个弊端
 * 1:java是单继承,导致继承了Thread就无法继承其他类去复用方法,实际开发
 * 中是非常不变的
 * 2:定义线程的同时重写run方法将线程要执行的任务一同定义在了线程中,导致
 * 线程与任务绑定了关系,不利于现成的重用
 *
 * 优点是结构简单,适合使用匿名内部类形式创建
 */

class MyThread1 extends Thread{
    public void run(){
        for (int i = 0; i <1000 ; i++) {
            System.out.println("你谁啊?");
        }
    }
}

class MyThread2 extends Thread{
    public void run(){
        for (int i = 0; i < 1000; i++) {
            System.out.println("开门查水表!");
        }
    }
}